package com.xquant.marketdata.curvestrip.service;

import com.github.pagehelper.PageInfo;
import com.xquant.marketdata.curvestrip.domain.VolsurfaceDTO;
import com.xquant.marketdata.curvestrip.entity.TvolsurfaceRatesDTO;
import com.xquant.marketdata.utils.ResponseVo;

import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @Author yunnuo.yang
 * @Date 22/9/2020 9:52
 * @Description 曲线剥离 波动率曲线
 *
 */
public interface VolatilityCurveStripService {

    public static String BEAN_NAME = "volatilityCurveStripService";

    PageInfo<VolsurfaceDTO> queryVolatilityCurveByPage(Map<String, Object> param);


    void deleteVolatilityCurve(Map<String, Object> param);

    void insertVolatilityCurve(Map<String, Object> param);

    void updateVolatilityCurve(Map<String, Object> param);

    PageInfo<Map> queryVolatilityCurveRefSetByPage(Map<String, Object> param);

    void insertVolatilityCurveRefSet(Map<String, Object> param);

    void deleteVolatilityCurveRefSetByDate(Map<String, Object> param);

    void updateVolatilityCurveRefSet(Map<String, Object> param);

    List<Map> queryVolSurfaceRates(Map<String, Object> param);

    List<Map> getLastDateByVlsCode(Map<String, Object> param);

    boolean insertVolSurfaceRatesList(List<TvolsurfaceRatesDTO> list);

    List<Map> queryRealTimeVolSurfaceRates(Map<String, Object> param);

    void deleteVolSurfaceRates(Map<String, Object> param);

    void deleteVolSurfaceRatesList(Map<String, Set<String>> map);

    void insertVolSurfaceRates(Map<String, Object> param);

    void updateVolSurfaceRates(Map<String, Object> param);

    ResponseVo packageResult(List<Map> list);

    List<Map> queryVolRateForCone(Map<String, Object> param);
    List<Map> queryVolCone(Map<String, Object> param);

    String transgetDate(String vls_term);

    List<TvolsurfaceRatesDTO> getLastVolSurfaceRates(Map<String, Set<String>> map,List<TvolsurfaceRatesDTO> list);

    void deleteVolatilityCurveOne(TvolsurfaceRatesDTO tvolsurfaceRatesDTO);

    boolean insertVolSurfaceRates2(TvolsurfaceRatesDTO form);

    void updateVolSurfaceRate(TvolsurfaceRatesDTO form);

    void allocateVolSurface(Map<String, Object> param);


    void updateSurfaceAuthority(Map<String, Object> params);


    List<VolsurfaceDTO> queryVolSurfaceCombox(Map<String, Object> params);

    List<VolsurfaceDTO>  checkVolatilityCurve(Map<String, Object> params);
}
